﻿Imports ControladorasAT.SIREOS
Imports ServiciosAT
Imports Utilitarios
Imports System.Data

Partial Class Pages_Default
    Inherits System.Web.UI.Page

    Dim selID As Decimal

    Private Sub cargarDatosOrden()
        Dim oOrden As New SireosWSServicio.OrdenServicio
        oOrden.codOrden = txbOrden.Text

        Dim oCtServicio As New CtServicio
        Dim oOrdenBE As SireosWSServicio.OrdenServicio = CType(oCtServicio.cargarDatosOrden(oOrden), SireosWSServicio.OrdenServicio)
        If Not (oOrdenBE Is Nothing) Then
            If oOrdenBE.sede.cliente.codTipoCLiente = Valores.numero.Uno Then
                txbCliente.Text = oOrdenBE.sede.cliente.razonSocial
            Else
                txbCliente.Text = oOrdenBE.sede.cliente.apeCliente + ", " + oOrdenBE.sede.cliente.nomCliente
            End If
            txbDocumento.Text = oOrdenBE.sede.cliente.nroDocumento
            txbDireccion.Text = oOrdenBE.sede.dirSede + " " + oOrdenBE.sede.ubigeo.dscUbigeo
            pnDatos.Visible = True
            listarCobros()
            listarPagos()
        Else
            limpiarcampos()
        End If
    End Sub

    Private Sub limpiarcampos()
        txbCliente.Text = Valores.vacio
        txbDocumento.Text = Valores.vacio
        txbDireccion.Text = Valores.vacio
        pnDatos.Visible = False
    End Sub

    Private Sub limpiarcamposPago()
        ddlbModalidaPago.SelectedValue = Valores.numero.Cero
        ddlbMoneda.SelectedValue = Valores.numero.Cero
        ddlbComprobante.SelectedValue = Valores.numero.Cero
        txbMonto.Text = Valores.vacio
        txbComprobante.Text = Valores.vacio
        txbobservaciones.Text = Valores.vacio
    End Sub

    Private Sub listarCobros()
        Dim oCobro As New SireosWSPago.OrdenServicioCobro
        oCobro.codOrden = txbOrden.Text

        Dim oCtPagos As New CtPagos
        Dim dt As DataTable = oCtPagos.listarCobros(oCobro)
        gridCobros.Columns(0).Visible = True
        gridCobros.DataSource = dt
        gridCobros.DataBind()
        gridCobros.Columns(0).Visible = False

        If Not (dt Is Nothing) Then
            Dim tot As Double = 0
            For i As Integer = 0 To dt.Rows.Count - 1
                Dim su As Double = Convert.ToDouble(gridCobros.Rows(i).Cells(4).Text)
                tot = tot + su
            Next
            LblTotalCobro.Text = Format(Convert.ToDecimal(tot), "##,###.00")
        End If
        LblDeuda.Text = LblTotalCobro.Text
    End Sub

    Private Sub listarPagos()
        Dim oPago As New SireosWSPago.OrdenServicioPago
        oPago.codOrden = txbOrden.Text

        Dim oCtPagos As New CtPagos
        Dim dt As DataTable = oCtPagos.listarPagos(oPago)
        gridPagos.Columns(0).Visible = True
        gridPagos.DataSource = dt
        gridPagos.DataBind()
        gridPagos.Columns(0).Visible = False

        LblTotalPago.Text = "0.00"

        If Not (dt Is Nothing) Then
            Dim tot As Double = 0
            For i As Integer = 0 To dt.Rows.Count - 1
                Dim su As Double = Convert.ToDouble(gridPagos.Rows(i).Cells(5).Text)
                tot = tot + su
            Next
            LblTotalPago.Text = Format(Convert.ToDecimal(tot), "##,###.00")
        End If
        LblDeuda.Text = Format(Convert.ToDouble(LblTotalCobro.Text) - Convert.ToDouble(LblTotalPago.Text), "##,###.00")
    End Sub

    Private Function validarCampos() As Boolean
        If ddlbModalidaPago.SelectedValue = Valores.numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarModalidadPago
            Return False
        ElseIf ddlbMoneda.SelectedValue = Valores.numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarTipoMoneda
            Return False
        ElseIf ddlbComprobante.SelectedValue = Valores.numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarComprobante
            Return False
        ElseIf txbComprobante.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarNroDocumento
            Return False
        ElseIf txbMonto.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarMonto
            Return False
        Else
            Return True
        End If
    End Function


    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Listas.listarTabla(Valores.tabla.Moneda, ddlbMoneda)
            Listas.listarTabla(Valores.tabla.ModalidadPago, ddlbModalidaPago)
            Listas.listarTabla(Valores.tabla.Comprobante, ddlbComprobante)
        End If
    End Sub

    Protected Sub ibtnBuscar_Click(sender As Object, e As ImageClickEventArgs) Handles ibtnBuscar.Click
        If txbOrden.Text = Valores.vacio Then
            Helper.mensajePanel(uppPago, Mensajes.ingresarOrdenServicio)
        Else
            cargarDatosOrden()
        End If
    End Sub

    Protected Sub imgAgregarPago_Click(sender As Object, e As ImageClickEventArgs) Handles imgAgregarPago.Click
        limpiarcamposPago()
        popupPago.Show()
    End Sub

    Protected Sub imgGrabar_Click(sender As Object, e As ImageClickEventArgs) Handles imgGrabar.Click
        If validarCampos() = True Then
            Dim usuregistro As Integer = Session("CodigoUsuario")

            Dim oPago As New SireosWSPago.OrdenServicioPago
            oPago.codOrden = txbOrden.Text
            oPago.cabMoneda = Valores.tabla.Moneda
            oPago.codMoneda = ddlbMoneda.SelectedValue
            oPago.cabModalidadPago = Valores.tabla.ModalidadPago
            oPago.codModalidadPago = ddlbModalidaPago.SelectedValue
            oPago.cabComprobante = Valores.tabla.Comprobante
            oPago.codComprobante = ddlbComprobante.SelectedValue
            oPago.monto = txbMonto.Text
            oPago.nroComprobante = txbComprobante.Text
            oPago.obsAbono = txbobservaciones.Text
            oPago.usuRegistro = usuregistro

            Dim oCtPago As New CtPagos
            If Not oCtPago.registrarPago(oPago).descripcionMensaje Is Nothing Then
                Helper.mensajePanel(uppNuevoPago, Mensajes.correctoGrabado)
                listarPagos()
                popupPago.Hide()
            Else
                Helper.mensajePanel(uppNuevoPago, Mensajes.errorGrabar)
            End If
        Else
            Helper.mensajePanel(uppNuevoPago, Valores.mensajevar)
        End If
    End Sub

    Protected Sub imgRetornar_Click(sender As Object, e As ImageClickEventArgs) Handles imgRetornar.Click
        popupPago.Hide()
    End Sub

    Protected Sub gridPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gridPagos.RowDataBound
        Dim oImageButton As ImageButton = Nothing
        Try
            If e.Row.RowType = DataControlRowType.DataRow Then
                oImageButton = DirectCast(e.Row.FindControl("ibtnAnularPago"), ImageButton)
                If oImageButton IsNot Nothing Then
                    oImageButton.CommandArgument = Convert.ToString(e.Row.RowIndex)
                End If
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Protected Sub gridPagos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gridPagos.RowCommand
        Try
            selID = Convert.ToInt32(gridPagos.Rows(Convert.ToInt32(e.CommandArgument)).Cells(0).Text)
            If e.CommandName = "cnAnular" Then
                Dim oPago As New SireosWSPago.OrdenServicioPago
                oPago.codPago = selID
                oPago.usuAnulacion = Session("CodigoUsuario")

                Dim oCtPago As New CtPagos
                oCtPago.anularPago(oPago)
                Helper.mensajePanel(uppPago, Mensajes.correctoAnulado)
                listarPagos()
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

End Class
